
[dbo].[asi_CreateRebuildOrRenamePK]
CREATE PROCEDURE [dbo].[asi_CreateRebuildOrRenamePK]
@tablename nvarchar(512),
@columns nvarchar(512)
AS
BEGIN
DECLARE @keyName nvarchar(512)
DECLARE @indexname nvarchar(512)
SELECT @keyName = name
FROM sysobjects
WHERE parent_obj = OBJECT_ID(@tablename)
AND xtype = 'PK'
SET @indexname = 'PK_' + @tablename
IF @keyName IS NOT NULL
BEGIN
IF @keyName <> ('PK_' + @tablename)
BEGIN
EXEC ('sp_rename ''' + @keyName + ''', ''' + @indexname + ''', ''OBJECT''')
END
ELSE
BEGIN
DBCC DBREINDEX (@tablename, @indexname) WITH NO_INFOMSGS
END
END
IF @keyName IS NULL
BEGIN
DECLARE @clustered nvarchar(12)
SET @clustered = 'CLUSTERED'
IF EXISTS (SELECT 1 FROM sysindexes where id = OBJECT_ID(@tablename) AND indid = 1)
SET @clustered = 'NONCLUSTERED'
EXEC ('ALTER TABLE ' + @tablename + ' ADD CONSTRAINT PK_' + @tablename + ' PRIMARY KEY ' + @clustered +' (' + @columns + ')')
END
END
GO